const path = require('path')
const url = require('url')

const electron = require('electron')
// icp通讯相关
const ipcMain = electron.ipcMain
// 应用的生命周期相关
const app = electron.app
// 应用窗口相关
const BrowserWindow = electron.BrowserWindow
// 导航相关
const Menu = electron.Menu
// 快键键相关
const globalShortcut = electron.globalShortcut
const {
  autoUpdater
} = require('electron-updater')

let mainWindow
let maxWindth
let maxHeight

function createWindow() {
  // 创建一个窗口
  const {
    width,
    height
  } = electron.screen.getPrimaryDisplay().workAreaSize
  maxWindth = width
  maxHeight = height
  mainWindow = new BrowserWindow({
    frame: false,
    width: 320,
    height: 445,
    resizable: false,
    title: 'DOTA'
  })

  // 加载本地文件 或者远程URL
  // mainWindow.loadURL(url.format({
  //   pathname: path.join(__dirname, './index/index.html'),
  //   protocol: 'file:',
  //   slashes: true
  // }))
  mainWindow.loadURL('http://192.168.10.89:7004/#/login')
  // 设置导航不存在
  Menu.setApplicationMenu(null);
  mainWindow.setIcon("./res/icon.ico")
  // 默认打开调试控制台
  // mainWindow.webContents.openDevTools({ detach: true });
  // 打开控制台的快键
  globalShortcut.register('ctrl+shift+alt+e', function () {
    let win = BrowserWindow.getFocusedWindow();
    if (win) {
      win.webContents.openDevTools({
        detach: true
      });
    }
  });
  // 当窗口关闭时
  mainWindow.on('closed', function () {
    mainWindow = null
  })
}
// 初始化elecreon之后被触发
app.on('ready', createWindow)

// 最后一个窗口关闭时调用的方法。
app.on('window-all-closed', function () {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})
// 当应用被激活时发出
app.on('activate', function () {
  // On OS X it's common to re-create a window in the app when the
  // dock icon is clicked and there are no other windows open.
  if (mainWindow === null) {
    createWindow()
  }
})
// 与渲染线程通讯
// 大小退出关闭
ipcMain.on('minSizeClick', () => {
  // app.quit()
  mainWindow.minimize();
  // 发送消息到主进程
  // event.sender.send('asynchronous-reply', reply);
});
ipcMain.on('maxSizeClick', (event, arg) => {
  if (mainWindow.isMaximized()) {
    mainWindow.restore();
  } else {
    mainWindow.maximize();
    mainWindow.center()
  }
  mainWindow.center()
});
ipcMain.on('closedClick', (event, arg) => {
  mainWindow.close();
});
// 返回登录和主页面
ipcMain.on('GoHOME', (event, arg) => {
  var resizable = true
  mainWindow.setResizable(resizable)
  mainWindow.setMaximumSize(maxWindth, maxHeight)
  mainWindow.setSize(970, 750)
  mainWindow.setMinimumSize(970, 750)
  mainWindow.center()
});
ipcMain.on('GoLOGIN', (event, arg) => {
  var resizable = false
  mainWindow.setResizable(resizable)
  mainWindow.setMinimumSize(320, 445)
  mainWindow.setSize(320, 445)
  mainWindow.setMaximumSize(320, 445)
  mainWindow.center()
});
// 打开一个子窗口
ipcMain.on('childTopClick', (event, arg) => {
  // 创建一个模态窗口
  // let child = new BrowserWindow({ parent: mainWindow, modal: true, show: false })
  // child.loadURL('https://github.com')
  // child.once('ready-to-show', () => {
  //   child.show()
  // })
  // 创建一个常规窗口
  let child = new BrowserWindow({
    parent: mainWindow,
    title: 'DOTA2'
  })
  // child.setIcon("./res/icon.ico")
  child.show()
});
ipcMain.on('versionClick', (event, arg) => {
  autoUpdater.setFeedURL('http://192.168.10.89:8080/');
  // 开始检查更新错误
  autoUpdater.on('error', function (error) {
    event.sender.send('getversionClick', "1");
  })
  // 开始检查更新
  autoUpdater.on('checking-for-update', function () {
    event.sender.send('getversionClick', "2");
  })
  // 发现一个可用更新并进行更新
  autoUpdater.on('update-available', function (info) {
    event.sender.send('getversionClick', "3");
  })
  // 暂无可更新版本，目前是最新版本
  autoUpdater.on('update-not-available', function () {
    event.sender.send('getversionClick', "4");
  })
  // 更新进度查看
  autoUpdater.on('download-progress', function (progressObj) {
    event.sender.send('getversionClick', progressObj);
  })
  // 更新完成后
  // releaseNotes String - 新版本更新公告
  // releaseName String - 新的版本号
  // releaseDate Date - 新版本发布的日期
  // updateURL String - 更新地址
  autoUpdater.on('update-downloaded', function (event, releaseNotes, releaseName, releaseDate, updateUrl, quitAndUpdate) {
    // 重启程序
    // autoUpdater.quitAndInstall();
    event.sender.send('getversionClick', "go");
  })
  autoUpdater.checkForUpdates();
});